#include <iostream>
#include <cstring>
using namespace std;
int n;
string s;
bool IsPalindrome(int t){
	char s1[n];
	int i = 0,l = 0;
	do{
		if(t&1)
			s1[l++] = s[i];
		i++;
		
	}while(t>>=1)
		;
	for(i = 0;i<l/2;++i)
		if(s1[i]!=s1[l-i-1])
		break;
	return i==l/2;
	
}int main(){
	cin>>s;
	n = s.length();
	int dp[1<<n];
	for(int t = 1;t<(1<<n);t++){
		// 枚举当前状态
		dp[t] = IsPalindrome(t)?1:17;// 判断当前状态是否是回文，如果是回文则步骤数为 1	
		for(int i = t;i;i = (i-1)&t){
			// 枚举 t 的所有子集		
			dp[t] = min(dp[t],dp[i]+dp[t^i]);// 更新当前状态的解的最小值		
		}
	}cout<<dp[(1<<n)-1];
	return 0;
	
}